import pandas as pd


def round_to_even(x):
    """四舍六入五成双的舍入函数"""
    if pd.isna(x):
        return x
    return round(x + 1e-12)  # 添加微小值避免浮点精度问题


# 读取Excel文件
file_path = r"C:\Users\encore\Downloads\街道同比(6).xlsx"
df = pd.read_excel(file_path)

# 保留需要的列
columns_to_keep = ['开始时间', '行政区', '街道名称', 'PM25本期', 'PM25同比']
df = df[columns_to_keep]

# 定义需要合并的街道对
merge_pairs = [
    ('罗圩', '龙河镇'),
    ('循环经济产业园', '耿车镇'),
    ('城东污水处理厂', '新材料科技城'),
    ('农业产业园', '顺河街道')
]

# 处理每个街道对
for street1, street2 in merge_pairs:
    # 获取两个街道的数据
    mask1 = df['街道名称'] == street1
    mask2 = df['街道名称'] == street2

    # 计算平均值并应用四舍六入五成双
    pm25_current_mean = round_to_even((df.loc[mask1, 'PM25本期'].values[0] + df.loc[mask2, 'PM25本期'].values[0]) / 2)
    pm25_yoy_mean = round_to_even((df.loc[mask1, 'PM25同比'].values[0] + df.loc[mask2, 'PM25同比'].values[0]) / 2)

    # 更新第二个街道的数据
    df.loc[mask2, 'PM25本期'] = pm25_current_mean
    df.loc[mask2, 'PM25同比'] = pm25_yoy_mean

    # 删除第一个街道的行
    df = df[~mask1]

# 保存处理后的数据（可选）
# df.to_excel(r"C:\Users\encore\Downloads\街道同比_处理后的.xlsx", index=False)

print("处理完成！")
print(df)
